package modelo;

public enum Modelo {

	Home("Home", Escala.MediaBaja, Escala.MediaBaja, Escala.MediaBaja, Escala.MediaBaja, Escala.MediaBaja, Escala.MediaBaja, Escala.Baja, Escala.MuyAlta, 1932.00),
	HomeCenter("Home Center", Escala.MediaAlta, Escala.Media, Escala.MediaAlta, Escala.MuyAlta,	Escala.MuyAlta,	Escala.MuyAlta, Escala.MediaBaja, Escala.MediaAlta, 3484.99),
	Office("Office", Escala.Media, Escala.Media, Escala.Media, Escala.MediaBaja, Escala.MediaBaja,	Escala.Media, Escala.MuyAlta, Escala.Media, 2250.00),
	WorkDesign("Work/Design", Escala.MediaAlta, Escala.MediaAlta, Escala.MuyAlta, Escala.MediaAlta, Escala.MuyAlta, Escala.MediaAlta, Escala.MediaAlta, Escala.Media, 3904.99),
	Gamer("Gamer", Escala.MuyAlta, Escala.MuyAlta, Escala.MuyAlta, Escala.MuyAlta, Escala.MuyAlta, Escala.MediaAlta, Escala.MuyAlta, Escala.MediaBaja, 4054.99),
	Ninguna("Ninguna", Escala.Baja, Escala.Baja, Escala.Baja, Escala.Baja, Escala.Baja, Escala.Baja, Escala.Baja, Escala.Baja, 0.00);
	
	private Especificacion especificacion;
	
	Modelo(String nombre, Escala procesamiento, Escala consumo, Escala ram, Escala calidadAudio, Escala procesamientoGrafico,
			Escala almacenamiento, Escala multiprocesamiento, Escala conectividad, double costo) {
		
		especificacion = new Especificacion(nombre, procesamiento, consumo, ram, calidadAudio, procesamientoGrafico, 
				almacenamiento, multiprocesamiento, conectividad, costo);
	}
	
	public String getNombre() {
		String prefijo = especificacion.esPreferido() ? "(*) " : "";
		return String.format("%s - $%.2f", prefijo + especificacion.getNombre(), especificacion.getPrecio());
	}
		
	public Especificacion getEspecificacion() {
		return especificacion;
	}

	public static Modelo desdeDescripcion(String descripcion) {
		return Modelo.valueOf(descripcion);
	}

	public void setPreferido() {
		especificacion.setPreferido();		
	}
}
